// 简化版Excel读取器 - 专为ExtendScript环境优化
// 避免字符编码问题，提供基础的Excel读取功能

// 简单的CSV解析函数
function parseCSVLine(line) {
    var result = [];
    var current = '';
    var inQuotes = false;
    
    for (var i = 0; i < line.length; i++) {
        var char1 = line.charAt(i);
        
        if (char1 === '"') {
            inQuotes = !inQuotes;
        } else if (char1 === ',' && !inQuotes) {
            result.push(current.trim());
            current = '';
        } else {
            current += char1;
        }
    }
    
    result.push(current.trim());
    return result;
}

// 读取CSV文件
function readCSVFile(file) {
    if (!file || !file.exists) {
        alert("文件不存在");
        return null;
    }
    
    try {
        file.open("r");
        file.encoding = "UTF-8";
        
        var data = [];
        var lineNumber = 0;
        
        while (!file.eof) {
            var line = file.readln();
            lineNumber++;
            
            if (line.length > 0) {
                var row = parseCSVLine(line);
                // 清理引号
                for (var i = 0; i < row.length; i++) {
                    row[i] = row[i].replace(/^"|"$/g, '');
                }
                data.push(row);
            }
        }
        
        file.close();
        
        if (data.length === 0) {
            alert("文件为空或格式不正确");
            return null;
        }
        
        return data;
        
    } catch (e) {
        if (file.open) file.close();
        alert("读取文件时出错: " + e.message);
        return null;
    }
}

// 尝试使用系统工具转换Excel为CSV
function convertExcelToCSV(excelFile) {
    try {
        // 生成临时CSV文件路径
        var csvPath = excelFile.path + "/" + excelFile.name.replace(/\.(xlsx?|xls)$/i, ".csv");
        var csvFile = new File(csvPath);
        
        // 提示用户手动转换
        var result = confirm(
            "检测到Excel文件: " + excelFile.name + "\n\n" +
            "由于ExtendScript环境限制，请手动将Excel文件转换为CSV格式：\n\n" +
            "1. 在Excel中打开文件\n" +
            "2. 选择 '文件' > '另存为'\n" +
            "3. 文件类型选择 'CSV (逗号分隔)'\n" +
            "4. 保存到相同目录\n\n" +
            "转换完成后点击'确定'继续，或点击'取消'退出"
        );
        
        if (!result) return null;
        
        // 检查CSV文件是否存在
        if (csvFile.exists) {
            return readCSVFile(csvFile);
        } else {
            alert("未找到转换后的CSV文件: " + csvFile.name);
            return null;
        }
        
    } catch (e) {
        alert("转换过程出错: " + e.message);
        return null;
    }
}

// 主要的Excel读取函数
function readExcelFileSimple(filePath) {
    var file;
    
    // 如果没有提供文件路径，显示文件选择对话框
    if (!filePath) {
        file = File.openDialog("选择Excel或CSV文件", "*.xlsx;*.xls;*.csv");
    } else {
        file = new File(filePath);
    }
    
    if (!file) {
        return null;
    }
    
    var fileName = file.name.toLowerCase();
    
    // 如果是CSV文件，直接读取
    if (fileName.indexOf('.csv') > -1) {
        return readCSVFile(file);
    }
    
    // 如果是Excel文件，提示转换为CSV
    if (fileName.indexOf('.xlsx') > -1 || fileName.indexOf('.xls') > -1) {
        return convertExcelToCSV(file);
    }
    
    alert("不支持的文件格式。请选择 .xlsx, .xls 或 .csv 文件");
    return null;
}

// 显示数据预览
function previewData(data, maxRows) {
    if (!data || data.length === 0) {
        alert("没有数据可预览");
        return false;
    }
    
    maxRows = maxRows || 5;
    var preview = "数据预览 (共 " + data.length + " 行):\n\n";
    
    for (var i = 0; i < Math.min(data.length, maxRows); i++) {
        var row = data[i];
        preview += "第" + (i + 1) + "行: ";
        
        for (var j = 0; j < Math.min(row.length, 3); j++) {
            preview += row[j];
            if (j < Math.min(row.length, 3) - 1) preview += " | ";
        }
        
        if (row.length > 3) preview += " ...";
        preview += "\n";
    }
    
    if (data.length > maxRows) {
        preview += "\n... 还有 " + (data.length - maxRows) + " 行";
    }
    
    return confirm(preview + "\n\n确认使用这些数据吗？");
}

// 测试函数
function testExcelReader() {
    var data = readExcelFileSimple();
    
    if (data) {
        if (previewData(data)) {
            alert("数据读取成功！共 " + data.length + " 行数据");
            return data;
        } else {
            alert("用户取消操作");
        }
    } else {
        alert("读取失败");
    }
    
    return null;
}

// 导出函数供其他脚本使用
var ExcelReader = {
    read: readExcelFileSimple,
    readCSV: readCSVFile,
    preview: previewData,
    test: testExcelReader
};